Golang
Gin路由
Gin本身是支援restful的,所以可以看一下github所寫的範例,使用route.就可以直接使用各種HTTP的方式囉!
func main() {
// Creates a gin router with default middleware:
// logger and recovery (crash-free) middleware
router := gin.Default()
router.GET("/someGet", getting)
router.POST("/somePost", posting)
router.PUT("/somePut", putting)
router.DELETE("/someDelete", deleting)
router.PATCH("/somePatch", patching)
router.HEAD("/someHead", head)
router.OPTIONS("/someOptions", options)
// By default it serves on :8080 unless a
// PORT environment variable was defined.
// router.Run()
// router.Run(":8000")
}
簡單說明一下restful,restful是一種規範或者風格,並非一種技術或者程式語言,所以嚴格來說不使用不遵守也不會怎樣,但為什麼需要他就稍微簡短的說明。
常見的Http Method有以下
RESTful:
在傳統API上,我們可能會看到這樣的function name 或者API name
新增使用者: /postUser
查所有帳號: /getUsers
查詢使用者: /getUser
修改使用者: /updateUser
刪除使用者: /delUser
那如果對方是使用RESTful的話
新增使用者:POST /user
查所有帳號:GET /users
查詢使用者:GET /user/1
修改使用者:PUT /user/1
刪除使用者:DELETE /user/1
從這裡可以看出,RESTful希望操作資料的行為以http method作為依據,所以雙方都可以從http method就可以知道這資料的操作行為是什麼了,以減少傳統在命名方式上,需要心有靈犀一點通的默契。
所以這時候我們回推一下,一開始的範例,如果是RESTful風格的話,理論上你的route每一個地都只會對資料做某件事情唷!例如GET就不應該會更新資料才是。
當然RESTful有幾個基本的定義啦!這部分就給有興趣的朋友自行餵狗了。
那繼續來看一下gin的route
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
router.Run(":8000")
}
這時候輸入看看http://localhost:8000/user/Tom
從程式碼可以猜出:name就是對應c.Param("name")
當然我們也可以改成
router.GET("/user/:name/:age", func(c *gin.Context) {
name := c.Param("name")
age := c.Param("age")
c.String(http.StatusOK, "Hello %s", name)
c.String(http.StatusOK, "age %s", age)
})
參考資料
https://github.com/gin-gonic/gin